package com.example.cfg;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 该类是一个 Spring 配置类，用于配置跨域资源共享（CORS），
 * 解决前后端分离开发中常见的跨域问题。
 */
@Configuration
public class CorsConfig {
    /**
     * 创建并配置一个 CorsFilter 实例，用于处理跨域请求。
     * @return 配置好的 CorsFilter 实例
     */
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedOriginPattern("*"); // 允许所有域名进行跨域调用
        config.addAllowedHeader("*"); // 允许任何请求头，，即客户端可以在请求中携带任何自定义的请求头
        config.addAllowedMethod("*"); // 允许任何 HTTP 方法，如 POST、GET、PUT、DELETE 等
        config.setAllowCredentials(true); // 允许携带凭证，例如 Cookie、HTTP 认证等信息

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config); // 对所有接口都有效

        return new CorsFilter(source);
    }
}